import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.InetAddress;

import javax.swing.*;
import javax.swing.border.BevelBorder;

/**
 * Fenêtre d'initialisation du réseau
 * 
 * @author H4201
 * 
 */
public class FenetreInitReseau extends JDialog implements ActionListener {

	/**
	 * ID de la fenêtre
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Champs de texte à remplir
	 */
	JTextField fieldPort, fieldIp;

	/**
	 * Controleur principal
	 */
	ControleurFenetrePrincipale ctrl;

	/**
	 * Constructeur de FenetreInitReseau. Crée et affiche la fenêtre
	 * 
	 * @param ctrl2
	 *            Controleur principal
	 */
	public FenetreInitReseau(ControleurFenetrePrincipale ctrl2) {
		ctrl = ctrl2;

		setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
		setModal(true);
		setTitle("Initialisation");

		JButton valider;

		JPanel pan = new JPanel(new BorderLayout());
		JPanel panPort = new JPanel();
		JPanel panIp = new JPanel();
		JPanel panBouton = new JPanel();
		Dimension dimm = new Dimension(65, 30);

		panPort.add(new JLabel("Entrez le port :"));
		fieldPort = new JTextField(10);
		fieldPort.setBorder(new javax.swing.border.BevelBorder(
				BevelBorder.RAISED, Color.GRAY, Color.DARK_GRAY));
		panPort.add(fieldPort);

		panIp.add(new JLabel("Entrez l'ip :"));
		fieldIp = new JTextField(10);
		fieldIp.setBorder(new javax.swing.border.BevelBorder(
				BevelBorder.RAISED, Color.GRAY, Color.DARK_GRAY));
		panIp.add(fieldIp);

		valider = new JButton("Valider");
		valider.addActionListener(this);
		valider.setBorder(new javax.swing.border.BevelBorder(
				BevelBorder.RAISED, Color.GRAY, Color.DARK_GRAY));
		valider.setPreferredSize(dimm);
		panBouton.add(valider);

		pan.add(panPort, BorderLayout.NORTH);
		pan.add(panIp, BorderLayout.CENTER);
		pan.add(panBouton, BorderLayout.SOUTH);

		setContentPane(pan);
		pack();
		setMinimumSize(new Dimension(200, 130));
		setLocationRelativeTo(null);
		setVisible(true);
	}

	/**
	 * Assigne les valeurs d'Ip et de port au controleur principal si les champs
	 * sont correctement renseignés, affiche une fenêtre d'erreur sinon.
	 */
	@Override
	public void actionPerformed(ActionEvent arg0) {
		try {
			int port = Integer.parseInt(fieldPort.getText());
			InetAddress.getByName(fieldIp.getText());
			ctrl.setIpPort(fieldIp.getText(), port);
			dispose();
		} catch (Exception e) {
			JOptionPane
					.showMessageDialog(
							null,
							"Merci de remplir tous les champs avec des valeurs correctes",
							"Erreur saisie", JOptionPane.OK_OPTION);
		}
	}

}
